GitHub Actionsでtextlintしてみた

GitHub Actionsでtextlintしてみた

Clock Icon2019.02.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、かたいなかです。

最近、ちょっとしたドキュメントのリポジトリに対して、textlintをかけたいと思うことがありました。しかし、textlintのためだけにCIツールを設定するとなると少し面倒だなとも感じました。

そんなとき、GitHub Actionsを使用するとリポジトリに設定ファイルを設置するだけで処理が実行できることを思い出しました。

そこで今回は、現在ベータのGitHub Actionsを使用してtextlintを実行する構成を試してみました。

GitHub Actionsは現在ベータです。

手順

GitHub ActionsのBetaにSign up

GitHub ActionsはまだBetaなのでそのままで使用することはできません。

以下のリンクよりベータにサインアップし、アカウントで有効化されるまで待ちます。

https://github.com/features/actions

対象のリポジトリ

以下のようなディレクトリ構成のリポジトリにtextlintによるテストを追加していきます。README.mddocsディレクトリ内がtextlintによる処理の対象です。

.
├── README.md
└── docs
    └── hoge.md

設定ファイルの設置

package.json

package.jsonにtextlintとそのルールを依存ライブラリとして指定します。

{
  "scripts": {
    "test": "./node_modules/.bin/textlint docs README.md"
  },
  "devDependencies": {
    "textlint": "^11.2.3",
    "textlint-rule-no-todo": "^2.0.1",
    "textlint-rule-preset-ja-technical-writing": "^3.1.0",
    "textlint-rule-preset-jtf-style": "^2.3.3"
  }
}
}

.textlintrc

.textlintrcでtextlintのルールを有効化します。

{
  "rules": {
    "no-todo": true,
    "preset-ja-technical-writing": true,
    "preset-jtf-style": true
  }
}

github/main.workflow

最後に .github/main.workflowでGitHub Actionsにtextlintを実行させるよう設定します。

workflow "Install and Test" {
  on = "push"
  resolves = ["Test"]
}

action "Install" {
  uses = "actions/npm@master"
  args = "install"
}

action "Test" {
  needs = "Install"
  uses = "actions/npm@master"
  args = "test"
}

ここまででリポジトリの内容は以下のようになっています。

.
├── .github
│   └── main.workflow
├── .textlintrc
├── README.md
├── docs
│   └── hoge.md
└── package.json

GitHubにプッシュ

ここまでの変更をコミットしてGitHubにプッシュすると処理が自動で開始されます。

正しく設定されていれば処理が成功します。

この状態でtextlintに怒られるPull Requestを作成します。

期待通り処理に失敗しました。

失敗のログの表示は以下の画像のようになります。必要に応じてreviewdog等も導入してPull Request上から見られるようにしても良いでしょう。

まとめ

GitHub Actionsを使用してtextlintを実行する方法を試してみました。

設定自体はGitHub Actionsが有効なアカウントであれば、CIツールを設定することなく、リポジトリに設定ファイルを追加するだけでお手軽に設定できるのは良いのではないかと感じました。

今回のコード

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.